package com.example.elderlycare.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.elderlycare.dao.entity.EquipType;
import com.example.elderlycare.dao.mapper.EquipTypeMapper;
import com.example.elderlycare.service.EquipTypeService;
import com.example.elderlycare.service.entity.EquipTypeItem;
import com.example.elderlycare.service.entity.EquipTypeListResponseBody;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Service
public class EquipTypeServiceImpl extends ServiceImpl<EquipTypeMapper, EquipType> implements EquipTypeService {
    @Resource
    EquipTypeMapper equipTypeMapper;

    /**
     * queryEquipTypeList 根据参数查询列表
     *
     * @param current      当前页
     * @param pageSize     页面容量
     * @param queryWrapper 查询参数封装
     * @return EquipTypeListResponseBody
     */
    @Override
    public EquipTypeListResponseBody queryEquipTypeList(int current, int pageSize, QueryWrapper<EquipType> queryWrapper) {
        Page<EquipType> page = new Page<>(current, pageSize);
        Page<EquipType> equipTypePage = equipTypeMapper.selectPage(page, queryWrapper);
        EquipTypeListResponseBody.EquipTypeListResponseBodyBuilder equipTypeListResponseBodyBuilder = EquipTypeListResponseBody.builder();
        equipTypeListResponseBodyBuilder.total(Math.toIntExact(equipTypePage.getTotal()));
        List<EquipTypeItem> items = new ArrayList<>();
        List<EquipType> res = equipTypePage.getRecords();
        res.forEach((item) -> {
            EquipTypeItem.EquipTypeItemBuilder equipTypeItemBuilder = EquipTypeItem.builder().
                    id(item.getId()).
                    name(item.getName()).
                    upType(item.getUpType()).
                    isMain(item.getIsMain() == 0 ? "否" : "是");
            items.add(equipTypeItemBuilder.build());
        });
        equipTypeListResponseBodyBuilder.items(items);
        return equipTypeListResponseBodyBuilder.build();
    }
}
